我有一个像['12','34','35','231']这样的ruby数组。我想将它转换成类似'12','34','35','231'的字符串。我该怎么做? 最佳答案 我将加入乐趣:['12','34','35','231'].join(',')#=> 12,34,35,231编辑:"'#{['12','34','35','231'].join("','")}'"#=> '12','34','35','231'一些字符串插值来添加第一个和最后一个单引号:P 关于Ruby数组到字符串的转
我喜欢这个字符串数组的文字表达式:%w(icaneasilycreatearraysofwords)我想知道是否有文字来获取符号数组。我知道我能做到%w(itislesseleganttocreatearraysofsymbols).map(&:to_sym)但如果只使用文字就太好了。 最佳答案 是的!这在Ruby2.0.0中是可能的。一种写法是:%i{foobar}#=>[:foo,:bar]您还可以使用其他分隔符,例如,您也可以编写%i(foobar)或%i!foobar!。此功能最初是在此处宣布的:http://www.rub
这个问题在这里已经有了答案:HowtochunkanarrayinRuby(2个答案)关闭4年前。我有一个数组foo=%w(12345678910)如何将其拆分或“分块”为更小的数组?classArraydefchunk(size)#returnarrayofarraysendendfoo.chunk(3)#=>[[1,2,3],[4,5,6],[7,8,9],[10]]
给定:a1=[5,1,6,14,2,8]我想确定它是否包含以下所有元素:a2=[2,6,15]在这种情况下,结果为false。是否有任何内置的Ruby/Rails方法来识别此类数组包含?一种实现方式是:a2.index{|x|!a1.include?(x)}.nil?有没有更好、更易读的方法? 最佳答案 a=[5,1,6,14,2,8]b=[2,6,15]a-b#=>[5,1,14,8]b-a#=>[15](b-a).empty?#=>false 关于ruby-on-rails-如何确定
使用any?方法检查数组是否不是否不好?a=[1,2,3]a.any?=>truea.cleara.any?=>false还是使用unlessa.empty?更好? 最佳答案 any?在某些情况下与notempty?不同。>>[nil,1].any?=>true>>[nil,nil].any?=>false来自文档:Iftheblockisnotgiven,Rubyaddsanimplicitblockof{|obj|obj}(thatisany?willreturntrueifatleastoneofthecollectionme
例子:[12,23,987,43删除“[”的最快、最有效的方法是什么?可能使用chop()但对于第一个字符? 最佳答案 与上面Pablo的回答类似,但更清洁:str[1..-1]将返回从1到最后一个字符的数组。'HelloWorld'[1..-1]=>"elloWorld" 关于ruby-从字符串中删除第一个字符的最简单方法是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/
使用Ruby将CSV文件读入数组非常容易,但我找不到任何关于如何将数组写入CSV文件的好文档。谁能告诉我该怎么做?如果重要的话,我正在使用Ruby1.9.2。 最佳答案 到一个文件:require'csv'CSV.open("myfile.csv","w")do|csv|csv到一个字符串:require'csv'csv_string=CSV.generatedo|csv|csv这是关于CSV的当前文档:http://ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html
我的代码中有以下逻辑:if!@players.include?(p.name)...end@players是一个数组。有什么方法可以避免!吗?理想情况下,这个片段应该是:if@players.does_not_include?(p.name)...end 最佳答案 if@players.exclude?(p.name)...endActiveSupport添加了exclude?Array、Hash和String的方法。这不是纯Ruby,但被很多Ruby开发者使用。来源:ActiveSupportCoreExtensions(Rail
我的Rails开发环境是基于Windows的,我的生产环境是基于Linux的。可能会使用VirtualHost。假设需要在/public文件夹中使用File.open('/tmp/abc.txt','r')引用一个文件名。——但在Windows中它应该是C:\tmp\abc.txt。如何进行正确的路径连接以处理两种不同的环境?prefix_tmp_path='/tmp/'filename="/#{rand(10)}.txt"fullname=prefix_tmp_path+filename#/tmp//1.txt当prefix_tmp_path="C:\tmp\"我得到C:\tmp\/
我想测试一个类是否继承自另一个类,但似乎没有相应的方法。classAendclassBfalseB.superclass==A=>true我想要的一个简单实现是:classClassdefis_subclass_of?(clazz)returntrueifsuperclass==clazzreturnfalseifself==Objectsuperclass.is_subclass_of?(clazz)endend但我希望它已经存在。 最佳答案 只需使用运算符BtrueAfalse或使用运算符(operator)BtrueAtrue